package com.ly.common.core.constant;

/**
 * 通用常量
 *
 * @author luoyun
 * @Date: 2025/5/07
 */
public interface BaseConstant {

    /**
     * 租户状态：当前不开启
     */
    boolean TENANT_FLAG = false;

    /**
     * 是否dev
     */
    boolean DEV_FLAG = true;

    /**
     * 正常状态：0
     * 禁用状态:-1
     */
    Integer STATUS_NORMAL = 0;
    Integer STATUS_DISABLE = -1;

    /**
     * 0未删除
     * 1已删除
     */
    Integer DEL_FLAG_0 = 0;
    Integer DEL_FLAG_1 = 1;

    /**
     * 系统日志类型： 1:登录 2:操作 3:租户操作日志 4:异常
     */
    int LOG_TYPE_1 = 1;
    int LOG_TYPE_2 = 2;
    int LOG_TYPE_3 = 3;
    int LOG_TYPE_4 = 4;

    /**
     * 操作日志类型： 1查询,2新增,3编辑,4删除,5导入,6导出
     */
    int OPERATE_TYPE_1 = 1;
    int OPERATE_TYPE_2 = 2;
    int OPERATE_TYPE_3 = 3;
    int OPERATE_TYPE_4 = 4;
    int OPERATE_TYPE_5 = 5;
    int OPERATE_TYPE_6 = 6;

    /**
     * 文件上传路径
     */
    String upload = "/opt/upFiles";
    String webapp = "/opt/webapp";
    /**
     * 文件上传类型：minio
     */
    String uploadType = "minio";


    // 考核周期类型
    String PERIODTYPE_Y = "1";// 年
    String PERIODTYPE_HY = "2";// 半年
    String PERIODTYPE_Q = "3";// 季度
    String PERIODTYPE_M = "4";// 月度
    /**
     * Token缓存时间：3600秒即一小时
     */
    // int TOKEN_EXPIRE_TIME = 3600;

    /**
     * 登录二维码
     */
    String LOGIN_QRCODE_PRE = "QRCODELOGIN:";
    String LOGIN_QRCODE = "LQ:";
    /**
     * 登录二维码token
     */
    String LOGIN_QRCODE_TOKEN = "LQT:";

    /**
     * 0一级菜单 1子菜单 2按钮权限
     */
    Integer MENU_TYPE_0 = 0;
    Integer MENU_TYPE_1 = 1;
    Integer MENU_TYPE_2 = 2;

    /**
     * 通告对象类型（USER:指定用户，ALL:全体用户）
     */
    String MSG_TYPE_UESR = "USER";
    String MSG_TYPE_ALL = "ALL";

    /**
     * 消息类型 1业务 2私信 3系统消息
     */
    String MSG_CATEGORY_1 = "1";
    String MSG_CATEGORY_2 = "2";
    String MSG_CATEGORY_3 = "3";


    /**
     * 模板消息中 跳转地址的对应的key
     */
    String MSG_HREF_URL = "url";

    /**
     * 消息模板：markdown
     */
    String MSG_TEMPLATE_TYPE_MD = "5";

    /**
     * 发布状态（0未发布，1已发布，2已撤销）
     */
    String NO_SEND = "0";
    String HAS_SEND = "1";
    String HAS_CANCLE = "2";

    /**
     * 阅读状态（0未读，1已读）
     */
    Integer MSG_READ_FLAG_0 = 0;
    Integer MSG_READ_FLAG_1 = 1;

    String MSG_SEND_STATUS_0 = "0";
    String MSG_SEND_STATUS_1 = "1";
    String MSG_SEND_STATUS_2 = "2";
    /**

     * 优先级（L低，M中，H高）
     */
    String PRIORITY_L = "L";
    String PRIORITY_M = "M";
    String PRIORITY_H = "H";

    /**
     * 短信模板方式  0 .登录模板、1.注册模板、2.忘记密码模板
     */
    String SMS_TPL_TYPE_0 = "0";
    String SMS_TPL_TYPE_1 = "1";
    String SMS_TPL_TYPE_2 = "2";

    /**
     * 状态(0无效1有效)
     */
    String STATUS_0 = "0";
    String STATUS_1 = "1";
    Integer STATUS_0_INT = 0;
    Integer STATUS_1_INT = 1;

    /**
     * 同步工作流引擎1同步0不同步
     */
    Integer ACT_SYNC_1 = 1;
    Integer ACT_SYNC_0 = 0;


    /**
     * 是否配置菜单的数据权限 1是0否
     */
    Integer RULE_FLAG_0 = 0;
    Integer RULE_FLAG_1 = 1;

    /**
     * 用户状态 1正常(解冻) 2冻结 3离职
     */
    Integer USER_UNFREEZE = 1;
    Integer USER_FREEZE = 2;
    Integer USER_QUIT = 3;

    /**
     * 文件上传类型（本地：local，Minio：minio，阿里云：alioss）
     */
    String UPLOAD_TYPE_LOCAL = "local";
    String UPLOAD_TYPE_MINIO = "minio";
    String UPLOAD_TYPE_OSS = "alioss";


    /**
     * 全局租户
     */
    String TENANT = "tenantId";

    /**
     * 微服务读取配置文件属性 服务地址
     */
    String CLOUD_SERVER_KEY = "spring.cloud.nacos.discovery.server-addr";

    /**
     * 字符串http
     */
    String STR_HTTP = "http";

    /**
     * 前端vue3版本Header参数名
     */
    String VERSION = "X-Version";

    /**
     * http:// http协议
     */
    String HTTP_PROTOCOL = "http://";

    /**
     * https:// https协议
     */
    String HTTPS_PROTOCOL = "https://";


    /**======【消息推送相关】==============================================================================*/
    /**
     * 消息：额外参数
     */
    String NOTICE_MSG_SUMMARY = "NOTICE_MSG_SUMMARY";


    /**========【消息推送相关】==========================================================================*/

    /**
     * 短信验证码redis-key的前缀
     */
    String PHONE_REDIS_KEY_PRE = "phone_msg";

    /**
     * 登录失败，用于记录失败次数的key
     */
    String LOGIN_FAIL = "LOGIN_FAIL_";




    /**
     * 报表允许设计开发的角色
     */
    public static String[] allowDevRoles = new String[]{"lowdeveloper", "admin"};
    /**
     * 修改手机号短信验证码redis-key的前缀
     */
    String CHANGE_PHONE_REDIS_KEY_PRE = "sys:cache:phone:change_phone_msg:";

    /**
     * 验证原手机号
     */
    String PHONE_ORIGINAL = "originalPhone";

    /**
     * 修改手机号
     */
    String PHONE_NEW = "newPhone";
}
